package indi.kider.server.employee.service;

import indi.kider.common.model.apabus.Rent;
import indi.kider.common.model.employee.Employee;
import indi.kider.common.model.employee.Tenant;
import indi.kider.common.model.employee.TenantQuery;
import indi.kider.common.model.employee.TenantQueryResponse;
import pers.vankid.common.model.base.CommonResponse;
import pers.vankid.common.utils.page.PageRequest;
import pers.vankid.common.utils.page.PageResponse;

import java.util.List;
import java.util.Map;

/**
 * Created by shixj on 2018/4/26.
 */
public interface TenantService {
    /**
     * 根据id获取
     * @param id
     * @return
     */
    Tenant getTenantById(Long id);

    /**
     * 获取分页查询
     * @param request
     * @return
     */
    PageResponse<List<Tenant>> getTenantPages(PageRequest<Tenant> request);

    /**
     * 不分页查询
     * @param tenant
     * @return
     */
    List<Tenant>getTenants(Tenant tenant);

    /**
     * 新增
     * @param tenant
     * @return
     */
    Tenant add(Tenant tenant);

    /**
     * 更新
     * @param tenant
     * @return
     */
    Tenant modify(Tenant tenant) throws Exception;
    /**
     * 删除  修改状态
     */
    void delById(Long id)throws Exception;

    /**
     * 重置密码
     * @param id
     * @return
     * @throws Exception
     */
    CommonResponse resetPassword(Long id,Employee employee)throws Exception;

    /**
     * 根据微信openId获取租房信息
     * @param phone
     * @return
     */
    Rent getTenantRent(String phone);

    /**
     * 邀请好友
     * mainId
     * @param tenant
     * @return
     */
    Tenant addFriend(Tenant tenant) throws Exception;

    /**
     * 查询租列表
     * @param request
     * @return
     */
    List<Map>getTenantList(PageRequest<TenantQuery> request);

    /**
     * 查询3天未开门的租客信息
     * @param request
     * @return
     */
    List<Map>getErrInfoList(PageRequest<TenantQuery> request);

    /**
     * 设置主要承租人
     * @param tenantId
     */

    void setMainTenant(Long tenantId)throws Exception;

    /**
     * 生成或者重置用户锁密码
     * @param tid
     * @return
     */
    CommonResponse resetLockpwd(Long tid)throws Exception;

    /**
     * 修改用户 密码数量、卡数量、指纹数量的配置
     * @param tenant
     * @return
     * @throws Exception
     */
    CommonResponse changeTenantSet(Tenant tenant)throws Exception;

    /**
     * 清除本月退租用户密码卡指纹，调用NB接口
     * @return
     * @throws Exception
     */
    CommonResponse clearPwdCardFg()throws Exception;
}
